package sv.gob.mtps.hr.controller;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import sv.gob.mtps.hr.model.SferhEmpleado;
import sv.gob.mtps.hr.service.RegistroPersonalService;



@Controller
public class RegistroPersonalController {

	@Autowired
	private RegistroPersonalService serviceRegistro;
	
	@RequestMapping(value = "/admin/ingresoPersonal")
	public  String ingresoPersonal(@ModelAttribute("sferhEmpleado") SferhEmpleado sferhEmpleado,BindingResult result,Map<String, Object> map){
		map.put("sferhEmpleado",sferhEmpleado);
		map.put("listEstado", serviceRegistro.listEstadoCivil());
		map.put("listNacionalidad", serviceRegistro.listNacionalidad());
		map.put("listGenero", serviceRegistro.listGenero());
		map.put("listEstadoEmp", serviceRegistro.listEstadoEmpleado());
		return "admin/ingresoPersonal";		
	}
	
	@RequestMapping(value = "/admin/editPersonal")
	public  String editPersonal(@ModelAttribute("sferhEmpleado") SferhEmpleado sferhEmpleado,BindingResult result,Map<String, Object> map,Model model){
		SferhEmpleado e = (SferhEmpleado) serviceRegistro.findSferhEmpleado(sferhEmpleado.getIdEmpleado());
		sferhEmpleado = e;
		 String DATE_FORMAT = "dd/MM/yyyy";
		 
		 SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT);
		 System.out.println("Today is " + sdf.format(sferhEmpleado.getFechaNacimiento()));
		 sferhEmpleado.setFechaNac(sdf.format(sferhEmpleado.getFechaNacimiento()));
		 sferhEmpleado.setTipoAccion("1");
		map.put("sferhEmpleado",sferhEmpleado);
		map.put("listEstado", serviceRegistro.listEstadoCivil());
		map.put("listNacionalidad", serviceRegistro.listNacionalidad());
		map.put("listGenero", serviceRegistro.listGenero());
		map.put("listEstadoEmp", serviceRegistro.listEstadoEmpleado());
		model.addAttribute("tipoAccion","1");
		return "admin/ingresoPersonal";		
	}
	
	
	@RequestMapping(value = "/admin/showPersonal")
	public  String showPersonal(@ModelAttribute("sferhEmpleado") SferhEmpleado sferhEmpleado,BindingResult result,Map<String, Object> map){
		sferhEmpleado.setIdEmpleado(0);
		sferhEmpleado.setNr(null);
		sferhEmpleado.setNombreCompleto(null);		
		map.put("listEmp", serviceRegistro.listSferhEmpleado());
		return "admin/showPersonal";		
	}

	
	@RequestMapping(value = "/admin/delPersonal")
	public  String delPersonal(@ModelAttribute("sferhEmpleado") SferhEmpleado sferhEmpleado,BindingResult result,Map<String, Object> map){
		
		serviceRegistro.removeSferhEmpleado(sferhEmpleado.getIdEmpleado());
		return "redirect:/admin/showPersonal";		
	}
	
	@RequestMapping(value="/admin/addPersonal",method = RequestMethod.POST)
	public @ResponseBody String addFondos(@ModelAttribute("sferhEmpleado") SferhEmpleado sferhEmpleado, BindingResult result ){
		try{
			SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy");
			Date dt = df.parse(sferhEmpleado.getFechaNac());
			System.out.println("fecha " + dt.toString());
			sferhEmpleado.setFechaNacimiento(dt);
			sferhEmpleado.setFechaIngreso(new Date());
			serviceRegistro.addSferhEmpleado(sferhEmpleado);
		}
		catch(DataAccessException ex){
			ex.printStackTrace();
		}catch(Exception ex){
			ex.printStackTrace();
		}
		
		return "success"	;
	}
	
	
	
	@RequestMapping(value="/admin/modificarPersonal",method = RequestMethod.POST)
	public @ResponseBody String modificarPersonal(@ModelAttribute("sferhEmpleado") SferhEmpleado sferhEmpleado, BindingResult result ){
		try{
			SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy");
			Date dt = df.parse(sferhEmpleado.getFechaNac());
			System.out.println("fecha " + dt.toString());
			sferhEmpleado.setFechaNacimiento(dt);
			sferhEmpleado.setFechaIngreso(new Date());
			serviceRegistro.editSferhEmpleado(sferhEmpleado);
		}
		catch(DataAccessException ex){
			ex.printStackTrace();
		}catch(Exception ex){
			ex.printStackTrace();
		}
		
		return "success"	;
	}
	
	
	
	@RequestMapping(value = "/admin/editFondos", method = RequestMethod.POST)
	public String editFondos(@ModelAttribute("fuenteFondos") SferhEmpleado sferhEmpleado,BindingResult result){			
			
			try{

			}
			catch(DataAccessException ex){
				ex.printStackTrace();
			}
			return "redirect:/admin/showFondos";
	}
	
	@RequestMapping(value = "/admin/delFondos", method = RequestMethod.POST)
	public String delFondos(@ModelAttribute("fuenteFondos") SferhEmpleado sferhEmpleado,BindingResult result){
		try{

		}
		catch(DataAccessException ex){
			ex.printStackTrace();
		}
		
		return "redirect:/admin/showFondos";
	}
	
	
	
	@RequestMapping(value = "/admin/findMunicipio")
	public  String findMunicipio(@ModelAttribute("sferhEmpleado") SferhEmpleado sferhEmpleado,BindingResult result,Map<String, Object> map){
		map.put("listMunicipio", serviceRegistro.listMunicipios());
		return "admin/find_municipio";		
	}
	
	
	
	
	
	
}
